(function(K) {
	
K.classLoader(K.data("testConfig").basePath).
provides("tk.k90tools.KTest").
load(function() {
	
    return function(anotherBasePath) {
    	var tempDataKey = "tk.k90tools.KTest.data";
    	var test = new YAHOO.tool.TestCase({
            name : "tk.k90tools.KTest",
            
            setUp : function() {
            	this.data = {
            		anotherBasePath : anotherBasePath
            	};
            	
                if (K.data.containsKey(tempDataKey)) {
                	this.data.tempData = K.data(tempDataKey);
                };
                
                K.data(tempDataKey, this.data);
            },
            
            tearDown : function() {
            	if (this.data.hasOwnProperty("tempData")) {
            		K.data(tempDataKey, this.data.tempData);
            	} else {
            		K.data.remove(tempDataKey);
            	}
            },
        
            testAsap : function() {
                var hasRun = false;
                
                K.asap(function() {
                    hasRun = true;
                });
                
                YAHOO.util.Event.onDOMReady(function() {
                    test.resume(function() {
                        this.wait(function() {
                            YAHOO.util.Assert.isTrue(hasRun);
                        }, 250);
                    });
                });
                
                this.wait();
            },
            
            testClassLoader : function() {
                K.classLoader(K.data("testConfig").basePath).
                requires("tk.k90tools.TestClass").
                load(function(I, S) {
                    test.resume(function() {
                        YAHOO.util.Assert.isObject(I.TestClass);
                        YAHOO.util.Assert.areSame(I.TestClass, S.tk.k90tools.TestClass);
                    });
                });
                
                this.wait();
            },
            
            testAnotherClassLoader : function() {
            	K.classLoader(this.data.anotherBasePath).
            	requires("test.TestClass").
            	load(function(I) {
            		test.resume(function() {
                        YAHOO.util.Assert.isFunction(I.TestClass);
            		});
            	});
            	
            	this.wait();
            },
            
            testScriptLoader : function() {
                K.classLoader().
                requireScript(K.data("testConfig").basePath + "tk/k90tools/scriptKTest.js").
                load(function() {
                    test.resume(function() {
                        YAHOO.util.Assert.isTrue(K.data(tempDataKey).scriptKTest);
                    });
                });
                
                this.wait();
                
            },
            testData : function() {
            	K.data("someData", 1);
            	
            	YAHOO.util.Assert.areSame(K.data("someData"), 1);
            	K.data.remove("someData");
            }
            
        });
        
        return test;
    }
});

})(k90tools);